Skip to content

feat(gateway): passthrough Route, remove OPENSHELL_USE_GATEWAY flag, expand RBAC - #430

Merged
jsell-rh merged 3 commits into
mainfrom
chore/consolidate-openshell-specs
Jul 30, 2026
Merged

feat(gateway): passthrough Route, remove OPENSHELL_USE_GATEWAY flag, expand RBAC#430
jsell-rh merged 3 commits into
mainfrom
chore/consolidate-openshell-specs

Conversation

@markturansky

@markturansky markturansky commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Remove OPENSHELL_USE_GATEWAY feature flag entirely from Go code (config, main, kube_reconciler, pod_sync), manifests (6 overlay patches), scripts, Makefile, UI Dockerfile, and e2e tests. Gateway is now always-on when OpenShell is enabled.
  • Add automatic passthrough Route creation for OpenShift/ROSA clusters without Gateway API. Routes use tls.termination: passthrough and auto-generate hostnames from baseDomain. Includes NLB IngressController detection for routeSelector labels and routes/custom-host RBAC.
  • Fix OwnerReference kind mismatch that caused Routes and NetworkPolicies to be garbage collected. getWorkloadUID now returns the actual workload kind (Deployment vs StatefulSet) instead of hardcoding StatefulSet.
  • Expand ClusterRole and project manager Role with permissions needed for gateway provisioning: persistentvolumeclaims, routes/custom-host, watch verbs on apps, networking.k8s.io, route.openshift.io groups. Resolves RBAC escalation errors when creating Roles in project namespaces.
  • Consolidate openshell specs (MTLS.md and rubber-on-road.md into openshell specs).

Test plan

  • go build ./... and go vet ./... pass
  • gofmt -l . reports no formatting issues
  • Routes created and persist in tenant-a and acp-01 namespaces (no GC churn)
  • OwnerReference correctly set to kind: Deployment matching actual workload
  • NetworkPolicies persist between reconciliation cycles
  • Route externally reachable via curl -sk https://openshell-gateway-tenant-a.apps.rosa.vteam-stage.7fpc.p3.openshiftapps.com (returns 404 from gateway — expected for non-gRPC requests)
  • ClusterRole update resolves tenant-b RBAC escalation error
  • No panic() or any types in diff

🤖 Generated with Claude Code

@markturansky markturansky changed the title chore(specs): consolidate MTLS.md and rubber-on-road.md into openshell specs feat(gateway): passthrough Route, remove OPENSHELL_USE_GATEWAY flag, expand RBAC Jul 27, 2026
@markturansky
markturansky marked this pull request as ready for review July 29, 2026 20:35
user and others added 3 commits July 30, 2026 00:10
…l specs

All unique knowledge from MTLS.md and rubber-on-road.md has been verified
present in the openshell spec files. Remaining gaps merged:

- Fix Route exposure contradiction in sandbox-provisioning spec: gateway
  MAY be exposed via GRPCRoute or NLB passthrough Route (was incorrectly
  stating "not exposed outside the cluster")
- Add GHCR commit-SHA image tag convention note to gateway spec
- Add GROUPS bash builtin collision and sandbox create hang to OIDC
  debugging reference

Delete MTLS.md and rubber-on-road.md as redundant — their content now
lives authoritatively in specs/platform/openshell-gateway*.spec.md and
specs/platform/openshell-sandbox-provisioning.spec.md.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…ag, expand RBAC

Remove the OPENSHELL_USE_GATEWAY feature flag from Go code, manifests, scripts, Makefile, and
UI Dockerfile — gateway is now always-on when OpenShell is enabled. Add automatic passthrough
Route creation for OpenShift/ROSA clusters without Gateway API, with dynamic OwnerReference
kind detection (Deployment vs StatefulSet) to prevent garbage collection. Expand the
control-plane project manager Role and ClusterRole with PVC, routes/custom-host, NetworkPolicy,
and apps group permissions needed for gateway provisioning.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…ed gracefully

Remove the bootstrap-admin Job that fails in Kind because the API server
image runs as root (runAsNonRoot violation). Admin seeding will be handled
through a different mechanism.

Add graceful degradation for SetInferenceRoute gRPC call when the gateway
does not implement it (older versions), logging a warning instead of
failing the session.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@markturansky
markturansky force-pushed the chore/consolidate-openshell-specs branch from c62e28f to d640ba8 Compare July 30, 2026 04:37
@jsell-rh
jsell-rh enabled auto-merge July 30, 2026 04:41
@jsell-rh
jsell-rh added this pull request to the merge queue Jul 30, 2026
Merged via the queue into main with commit 91ca033 Jul 30, 2026
38 of 39 checks passed
@jsell-rh
jsell-rh deleted the chore/consolidate-openshell-specs branch July 30, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants